package uiMain.menuconsola;

import java.util.*;

public class MenuDeConsola {
	private ArrayList<OpcionDeMenu> opciones;
	private Scanner in;
	
	public MenuDeConsola() {
		this.opciones = new ArrayList<OpcionDeMenu>();
		this.in = new Scanner(System.in);
	}
	
	public void agregarOpcion(OpcionDeMenu op) {
		this.opciones.add(op);
	}
	
	public void lanzarMenu() {
		boolean terminado = false;
		
		while (!terminado) {
			int n = opciones.size();
			for (int i = 1; i <= n; ++i) {
				OpcionDeMenu op = opciones.get(i - 1);
				System.out.println(i + ". " + op.getDescripcion());
			}
			System.out.println((n + 1) + ". Salir");
			System.out.println();
			System.out.print("Por favor ingrese una opción: ");
			
			String str = in.next();
			boolean isValid = true;
			for (int j = 0; j < str.length(); ++j)
				if (str.charAt(j) < '0' || str.charAt(j) > '9')
					isValid = false;
			if (!isValid) {
				System.out.println("Error: La opción que ha ingresado no es válida!");
				continue;
			}
			
			int opcion = Integer.parseInt(str);
			
			if (opcion == n + 1) {
				System.out.println("Gracias por utilizar nuestros servicios!");
				break;
			}
			
			if (opcion < 1 || opcion > n + 1) {
				System.out.println("Error: La opción debe ser un número entre 1 y " + (n + 1) + "!");
				continue;
			}
			
			opciones.get(opcion - 1).ejecutar();
		}
	}
}
